When updating hardware architectures of computer systems such as game consoles to implement faster, more feature rich hardware, developers are faced with the issue of backwards compatibility to the legacy computer system for application programs or games developed for the legacy computer system platform. In particular, it is commercially desirable that the updated hardware architecture support application programs or games developed for the legacy hardware architecture. However, if the updated hardware architecture differs substantially, or radically, from that of the legacy hardware architecture, architectural differences between the two systems may make it very difficult, or even impossible, for legacy application programs or games to operate on the new hardware architecture without substantial hardware modification and/or software patches. Since customers generally expect such backwards compatibility, a solution to these problems is critical to the success of the updated hardware architecture.
To assure that a new hardware architecture provides complete backwards compatibility to a legacy hardware architecture, one solution is to validate the operation of every application program or game written for the legacy hardware architecture in the new hardware architecture. In the case of a game system such as Xbox, for example, over 750 Xbox games would have to be validated at extraordinary expense with an associated time delay to product release. This problem is shared by any software application platform, and no computer system developer relishes the thought of testing an entire library of application programs or games each time the hardware architecture is changed. A technique to avoid this costly validation process, while still providing support to legacy application programs or games, is desired.
Cost and lack of sufficient technology prevent the solution of the backwards compatibility problems using hardware. Also, re-mastering an existing library of legacy application programs or games is extraordinarily cumbersome and expensive, and thus also undesirable. On the other hand, one approach to this problem that has been successfully used is to emulate the legacy hardware on the new hardware using hardware emulation techniques whereby one or more actual legacy hardware components is included in the new hardware device. For example, the Sony PlayStation 2 game system runs PlayStation 1 games by invoking a hardware emulator that emulates the hardware of the PlayStation 1 architecture. Unfortunately, this approach also has its problems in that it requires the legacy hardware and new hardware to be quite similar and may not be modified once shipped, thereby significantly limiting the upgrade path for the hardware platform.
Fortunately, recent advances in PC architecture and software emulation have provided hardware architectures for computers, even game consoles, that are powerful enough to enable the emulation of legacy application programs or games in software rather than hardware. Such software emulators translate the title instructions for the application program or game on the fly into device instructions understandable by the new hardware architecture. This software emulation approach is particularly useful for backwards compatibility for computer game consoles since the developer of the game console maintains control over both the hardware and software platforms and is quite familiar with the legacy games.
However, a problem remains with the use of software emulators for backwards compatibility. Problems may develop with backwards compatibility for certain legacy application programs or games whereby changing the underlying software platform may destabilize the software emulation of the legacy application program or game. Unfortunately, the fixes themselves could destabilize legacy application programs and games in unexpected ways. As noted above, re-certifying the emulation software against all of the application programs and games is not a desirable option. Accordingly, a solution is required that enables the developer of the computer hardware architecture or game system to change the emulation software, the application programs, or the games without destabilizing the compatibility between the legacy system and the new system. Also, it is desired to enable emulation of only a subset of legacy application programs or games at launch of the emulator product and to enable addition of emulation support for additional application programs or games at a later time so that launch of the emulation product need not be held up until all legacy products are certified. The present invention addresses these needs in the art.